#ifndef USERSTATE_H_
#define USERSTATE_H_

#include <vector>
#include "card.h"
#include "cardinstance.h"

using namespace std;

namespace mtga {

	class UserState {
		public:
			UserState(Deck* deck);
			virtual ~UserState();

			virtual void init();
			virtual void suffleLibrary();
			virtual void drawCard(unsigned count);

			int getCurrentTurn() const {
				return currentTurn;
			}
			vector<Card*> getLibrary() const {
				return library;
			}
			vector<Card*> getHand() const {
				return hand;
			}
			vector<Card*> getCementery() const {
				return cementery;
			}
			vector<CardInstance*> getBoard() const {
				return board;
			}
			Deck* getDeck() const {
				return deck;
			}

		private:
			int currentTurn;
			vector<Card*> library;
			vector<Card*> hand;
			vector<Card*> cementery;
			vector<CardInstance*> board;
			Deck* deck;

			/** Determina si se ha jugado la tierra del turno */
			bool turnLandPlayed;
	};
}

#endif
